/*
    Asignatura: Procesadores de lenguajes.
    Practica de labotario numero 8.
    Autores:
                Guillermo Garcia Juanes (Alu3889)
                Jose Antonio Hernandez Gonzalez (Alu3809)

    Fichero: AnalexC.g
    Contenido: Resolucion del ejercio cuarto de la practica (LEXICO).
*/
lexer grammar AnalexC;

@header {
    package pl.equipo13.p8;
}
 
/*----------------------------------------------------LEXICO----------------------------------------------------*/
/*TOKENS*/
IF: 'if';
VOID: 'void';
INT: 'int';
CHAR: 'char';
FLOAT: 'float';
/*------*/

fragment NUEVA_LINEA: '\n' | '\r\n';
BLANCO: (' '|'\t'|NUEVA_LINEA) {$channel=HIDDEN;};
fragment LETRA: 'a'..'z' | 'A'..'Z';
fragment DIGITO: '0'..'9';
fragment GUIONBAJO: '_';
fragment ASTERISCO: '*';
fragment SLASH: '/';
fragment MAS: '+';
fragment GUION: '-';
CAMBIOSIGNO: GUION;
APARENTESIS: '(';
CPARENTESIS: ')';
ALLAVE: '{';
CLLAVE: '}';
SEPARADOR: ';';
NEGADO: '!';
COMA: ',';
IGUAL: '=';
fragment COMILLAS: '"';
fragment ASPERSAN: '&';
fragment BARRA: '|';
fragment MAYOR: '>';
fragment MENOR: '<';
fragment MAYORIGUAL: MAYOR IGUAL;
fragment MENORIGUAL: MENOR IGUAL;
fragment AND: ASPERSAN ASPERSAN;
fragment OR: BARRA BARRA;
IDENT: (LETRA | GUIONBAJO) (LETRA | GUIONBAJO | DIGITO)*;
NUMERO : ((DIGITO)+ '.') => (DIGITO)+ '.' (DIGITO)* | (DIGITO)+;
OPERADORCOMPARAR: MAYOR | MENOR | MAYORIGUAL | MENORIGUAL | AND | OR | NEGADO;
OPERADORMULDIV: ASTERISCO | SLASH;
OPERADORSUMRES: MAS | GUION;
CADENA: COMILLAS (options { greedy=false; }:.)* COMILLAS;